package gov.pr.celepar.sentinela.admin.action.consultas;

import gov.pr.celepar.framework.util.Data;
import gov.pr.celepar.framework.util.Pagina;
import gov.pr.celepar.sentinela.admin.action.BaseAction;
import gov.pr.celepar.sentinela.admin.excecao.SentinelaServerException;
import gov.pr.celepar.sentinela.admin.facade.LogGrupoSistemaFacade;
import gov.pr.celepar.sentinela.admin.form.consultas.LogGrupoSistemaForm;
import gov.pr.celepar.sentinela.admin.pojo.LogGrupoSistema;

import java.util.Collection;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class PesquisaLogGrupoSistemaAction extends BaseAction {

	private static Log logger = LogFactory
			.getLog(AtivacaoAuditoriaReportAction.class);

	public String executar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		this.forward = "list_log_grupo_sistema";

		LogGrupoSistemaForm logform = (LogGrupoSistemaForm) form;

		this.listarSistemasAutorizados(request);

		if (logform.getAcao() != null && logform.getAcao().equals("pesquisar")) {

			Long codGrupo = logform.getCodGrupo() != null
					&& !logform.getCodGrupo().equals("") ? Long.decode(logform
					.getCodGrupo()) : null;
			Long codSistema = logform.getCodSistema() != null
					&& !logform.getCodSistema().equals("") ? Long
					.decode(logform.getCodSistema()) : null;
			Long codAutor = logform.getCodAutor() != null
					&& !logform.getCodAutor().equals("") ? Long.decode(logform
					.getCodAutor()) : null;
			Integer limite = Integer.decode(logform.getLimite());
			Date dataInicial = Data.formataData(logform.getDataInicial());
			Date dataFinal = Data.formataData(logform.getDataFinal());
			if (dataFinal != null)
				dataFinal = Data.addDias(1, dataFinal);

			Integer indicePagina = new Integer(
					logform.getIndice() == null ? "1" : logform.getIndice());

			Collection<LogGrupoSistema> logs = LogGrupoSistemaFacade
					.listarLogs(codGrupo, codSistema, codAutor, dataInicial,
							dataFinal, limite);

			if (logs != null && !logs.isEmpty()) {
				Integer totalRegistros = new Integer(logs.size());
				Pagina pagina = new Pagina(totalRegistros, indicePagina,
						totalRegistros);
				pagina.setRegistros(logs);

				request.setAttribute("pagina", pagina); // preenche a página, se
				// a página estiver
				// preenchida, o JSP vai
				// desenhar o resultado
				logger.debug("Foram recuperados " + totalRegistros
						+ " registros de Log");
			} else {
				throw new SentinelaServerException(
						"Nenhum registro encontrado! ");
			}
		}

		return "list_log_grupo_sistema";
	}
}
